﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;

namespace FONCREAGROINTEGRAL.Controllers
{
    public class ejercicioController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
        //
        // GET: /ejercicio/
        public ActionResult IndexActivoCTS()
        {
            var query = entidades.EJERCICIOs.Where(e => e.EstadoP == true);

            var result = (from ea in query.OrderBy(a => a.Anio).ToList()
                          join em in entidades.EJERCICIOMES on ea.IdEjercicio equals em.IdEjercicio
                          where em.vigenteCTS == true
                          join tt in entidades.TIPOTRABAJADORs on ea.EstadoP equals tt.Defecto
                          select new
                          {
                              IdEjercicio = ea.IdEjercicio,
                              Anio = ea.Anio,
                              EstadoP = ea.EstadoP,
                              idejerciciomes = em.idejerciciomes,
                              mes = mesencadena(Convert.ToInt32(em.mes)).ToUpper(),
                              NomTipoTrabajador = tt.Descripción,
                              IdTipoTrabajador = tt.IdTipoTrabajador
                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult IndexRH()
        {
            //int start = Convert.ToInt32(Request.QueryString["start"]);
            //int limit = Convert.ToInt32(Request.QueryString["limit"]);
            
            var query = entidades.EJERCICIOs.Where(e => e.EstadoP != null);

            var result = (from ea in query.OrderByDescending(a => a.Anio).ToList()
                          select new
                          {
                              IdEjercicio = ea.IdEjercicio,
                              Anio = ea.Anio,
                              EstadoP = ea.EstadoP,
                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }        
        //
        // GET: /ejercicio/

        public ActionResult Index()
        {
            var query = entidades.EJERCICIOs.Where(a=>a.Anio!=0);

            var result = (from ea in query.OrderBy(a => a.Anio)/*.Skip(start).Take(limit)*/
                          .ToList()
                          select new
                          {
                              Id = ea.IdEjercicio,
                              Anio = ea.Anio,
                              EstadoP = ea.EstadoP,
                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult IndexLimiteQuinta(int id)
        {
            var query = entidades.EJERCICIOs.Where(em => em.IdEjercicio == id);

            var result = (from ea in query.OrderBy(a => a.Anio).ToList()
                          select new
                          {
                              Id = ea.IdEjercicio,
                             // Mes = mesencadena(Convert.ToInt32(ea.mes)),
                             Anio = ea.Anio,
                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        //
        // GET: /ejercicio/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //GET: /ejercicio/Comprobarejercicio
        public ActionResult Comprobarejercicio()
        {
            try
            {
                var ean = entidades.EJERCICIOs.Single(ea => ea.EstadoP == true);

                var eme = entidades.EJERCICIOMES.Single(em => em.vigente == true && em.IdEjercicio == ean.IdEjercicio);

                return Content(Convert.ToString(ean.IdEjercicio) + "#" + Convert.ToString(ean.Anio) + "#" + Convert.ToString(eme.idejerciciomes) + "#" + mesencadena(Convert.ToInt32(eme.mes)));
            }
            catch
            {
                return Content("0#0#0#0");
            }
        }
        public ActionResult ComprobarejercicioCTS()
        {
            try
            {
                var ean = entidades.EJERCICIOs.Single(ea => ea.EstadoP == true);

                var eme = entidades.EJERCICIOMES.Single(em => em.vigenteCTS == true && em.IdEjercicio == ean.IdEjercicio);

                return Content(Convert.ToString(ean.IdEjercicio) + "#" + Convert.ToString(ean.Anio) + "#" + Convert.ToString(eme.idejerciciomes) + "#" + mesencadena(Convert.ToInt32(eme.mes)));
            }
            catch
            {
                return Content("0#0#0#0");
            }
        }

        //mes a cadena
        public string mesencadena(int id)
        {
            var mes = "";
            switch (id)
            {
                case 1: mes = "Enero"; break;
                case 2: mes = "Febrero"; break;
                case 3: mes = "Marzo"; break;
                case 4: mes = "Abril"; break;
                case 5: mes = "Mayo"; break;
                case 6: mes = "Junio"; break;
                case 7: mes = "Julio"; break;
                case 8: mes = "Agosto"; break;
                case 9: mes = "Setiembre"; break;
                case 10: mes = "Octubre"; break;
                case 11: mes = "Noviemre"; break;
                case 12: mes = "Diciembre"; break;

            }
            return mes;
        }

        //
        // GET: /ejercicio/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /ejercicio/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /ejercicio/Edit/5
 
        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /ejercicio/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /ejercicio/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /ejercicio/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        public ActionResult GeneraAnios()
        {
            string ejercicio = Convert.ToString(Request.QueryString["query"]);

            DateTime fechaIni = Convert.ToDateTime("2001-01-01");
            DateTime fechaFin = DateTime.Now;
            List<Ejercicios> Ejercicios = new List<Ejercicios>();

            for (int i = fechaIni.Year; i <= fechaFin.Year; i++)
            {
                var Anio = new Ejercicios();
                Anio.IdEjercicio = i;
                Anio.Ejercicio = Convert.ToString(i);
                Ejercicios.Add(Anio);
            }

            if (!String.IsNullOrEmpty(ejercicio))
            {
                return Json(new { grid = Ejercicios.Where(c => c.Ejercicio.Contains(ejercicio)), total = Ejercicios.Count }, JsonRequestBehavior.AllowGet);
            }


            return Json(new { grid = Ejercicios, total = Ejercicios.Count }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult GeneraMeses()
        {
            string mes = Convert.ToString(Request.QueryString["query"]);

            List<Meses> Mesx = new List<Meses>();

            for (int i = 1; i <= 12; i++)
            {
                var Mes = new Meses();
                Mes.IdMes = i;
                Mes.Mes = mesencadena(i);
                Mesx.Add(Mes);
            }

            if (!String.IsNullOrEmpty(mes))
            {
                return Json(new { grid = Mesx.Where(c => c.Mes.ToUpper().Contains(mes.ToUpper())), total = Mesx.Count }, JsonRequestBehavior.AllowGet);
            }

            return Json(new { grid = Mesx, total = Mesx.Count }, JsonRequestBehavior.AllowGet);
        }

        
    }
}
